package com.itany.corejava.code07_面向对象.接口;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月07日 11:46
 */
public class Test02_接口特性 {
    public static void main(String[] args) {
        A a=new C();
        a.show1();
        a.show2();
        a.show3();

        System.out.println(a instanceof C);
        ((C)a).show4();

        B b=new C();
        ((C) b).show1();
        ((C) b).show2();
        ((C) b).show3();
        b.show4();

    }
}
interface A{
    void show1();
    void show2();
    //default修饰的方法，可以有方法体，实现类不强制实现该方法的
    default void show3(){
        System.out.println("这是JDK8新增的用法，接口中的普通方法");
    }

}
interface B{
    void show4();
}
// 一个类可以实现多个接口, 多个接口之间以逗号分割
class C implements A,B{
    @Override
    public void show1() {
        System.out.println("实现show1方法");
    }

    @Override
    public void show2() {
        System.out.println("实现show2方法");
    }

    @Override
    public void show4() {
        System.out.println("实现show4方法");
    }
}

// 接口可以继承接口，一个接口可以继承多个接口, 接口支持多继承接口
// 接口只能继承接口，不能继承类
interface D extends A,B{
    void show5();
}
// 如果有新的类实现D类，需要实现D类、A类、B类中的所有的抽象方法
